package own.stu.jobgib.playown.redis.jedis;

import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Pipeline;

import java.util.List;

@Slf4j
public class JedisTest {

    public static void main(String[] args) {

        /**
         * JedisPool作为连接池，链表结构，每个元素是Jedis，
         * Jedis跟redis server 交互是同步的，通过socket的inputStream outPutStream 来进行读写，
         * 相比于redisson，简单；而且命令贴近命令行
         *
         * redisson的实现和阅读难度很高，大量使用了异步，但是redisson的代码质量比jedis好很多，
         * 实现的都是高阶的功能
         *
         * 业务可以同时使用 redisson和jedis
         */
        try (JedisPool pool = new JedisPool("rediss.server", 6379);) {

            final Jedis jedis = pool.getResource();
            jedis.set("clientName", "Jedis");
            log.info(" ------- ");

            final Pipeline pipelined = jedis.pipelined();
            for (int i = 0; i < 4; i++) {
                pipelined.lpush("l-1", i + "");
            }
            pipelined.close(); // 需要close pipeline, 得到服务器的响应才能继续使用jedis
            log.info(" -------- ");

            final List<String> list = jedis.lrange("l-1", 0, -1);
            log.info("result : {}", list);
        }
    }
}
